UnlockConnector 개요
UnlockConnector는 중앙 시스템(CSMS)에서 충전소로 보내는 커넥터 잠금 해제 요청 메시지입니다. 이 메시지를 통해 CSMS는 충전이 완료되었거나 비상 상황에서 물리적으로 잠긴 충전 커넥터를 원격으로 해제할 수 있으며, 사용자가 충전 케이블을 분리할 수 있도록 돕는 중요한 기능을 제공합니다.
메시지 구조
Request (CSMS → 충전소)
{
"evseId": 1,
"connectorId": 1
}
Response (충전소 → CSMS)
{
"status": "Unlocked",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "커넥터가 성공적으로 잠금 해제되었습니다"
}
}
주요 필드 설명
Request 필드들
evseId 필드 (필수)
필드명 |
필수여부 |
타입 |
설명 |
evseId |
필수 |
Integer |
잠금 해제할 EVSE의 식별자 |
connectorId 필드 (필수)
필드명 |
필수여부 |
타입 |
설명 |
connectorId |
필수 |
Integer |
잠금 해제할 커넥터의 식별자 |
Response 필드들
status 필드 (필수)
값 |
설명 |
Unlocked |
잠금 해제됨 - 커넥터가 성공적으로 해제됨 |
UnlockFailed |
잠금 해제 실패 - 기술적 문제로 해제 불가 |
OngoingAuthorizedTransaction |
진행 중인 인증된 트랜잭션 - 충전 중이므로 해제 불가 |
UnknownConnector |
알 수 없는 커넥터 - 지정된 커넥터가 존재하지 않음 |
statusInfo 필드 (선택사항)
필드명 |
필수여부 |
타입 |
설명 |
reasonCode |
선택사항 |
String |
상태 이유 코드 |
additionalInfo |
선택사항 |
String |
추가 상세 정보 |
실제 사용 예제
예제 1: 성공적인 커넥터 잠금 해제
// Request
{
"evseId": 1,
"connectorId": 1
}
// Response
{
"status": "Unlocked",
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "커넥터 1이 잠금 해제되었습니다."
}
}
예제 2: 충전 중이라 잠금 해제 불가
// Request
{
"evseId": 2,
"connectorId": 1
}
// Response
{
"status": "OngoingAuthorizedTransaction",
"statusInfo": {
"reasonCode": "ChargingInProgress",
"additionalInfo": "활성 충전 세션이 진행 중입니다."
}
}
예제 3: 기술적 문제로 잠금 해제 실패
// Request
{
"evseId": 1,
"connectorId": 2
}
// Response
{
"status": "UnlockFailed",
"statusInfo": {
"reasonCode": "MechanicalFailure",
"additionalInfo": "커넥터 잠금 메커니즘 오류"
}
}
예제 4: 존재하지 않는 커넥터
// Request
{
"evseId": 3,
"connectorId": 5
}
// Response
{
"status": "UnknownConnector",
"statusInfo": {
"reasonCode": "ConnectorNotFound",
"additionalInfo": "EVSE 3에 커넥터 5가 존재하지 않습니다."
}
}
예제 5: 비상 상황에서의 강제 해제
// Request
{
"evseId": 1,
"connectorId": 1
}
// Response
{
"status": "Unlocked",
"statusInfo": {
"reasonCode": "EmergencyUnlock",
"additionalInfo": "비상 해제 수행됨. 충전이 즉시 중단되었습니다."
}
}
예제 6: 전력 공급 중단으로 인한 해제
// Request
{
"evseId": 2,
"connectorId": 1
}
// Response
{
"status": "Unlocked",
"statusInfo": {
"reasonCode": "PowerFailureUnlock",
"additionalInfo": "정전으로 인한 자동 잠금 해제."
}
}
예제 7: 사용자 요청에 의한 해제
// Request
{
"evseId": 1,
"connectorId": 1
}
// Response
{
"status": "Unlocked",
"statusInfo": {
"reasonCode": "UserRequested",
"additionalInfo": "사용자 요청에 따른 잠금 해제."
}
}
잠금 해제 시나리오
정상적인 충전 완료 후 해제
- 충전 완료 (100% 또는 설정된 한계 도달)
- 트랜잭션 종료 (TransactionEvent.Ended)
- CSMS에서 UnlockConnector 요청
- 커넥터 잠금 해제 성공
- 사용자가 케이블 분리
비상 상황에서의 강제 해제
- 비상 상황 발생 (화재, 의료 응급상황 등)
- 운영자 또는 자동 시스템에서 강제 해제 요청
- 진행 중인 충전 즉시 중단
- 커넥터 잠금 해제
- SecurityEventNotification 전송
기술적 문제 해결
- 사용자가 케이블 분리 불가 신고
- 원격 진단 수행
- UnlockConnector 요청 시도
- 실패 시 현장 기술자 파견
- 물리적 수리 후 정상 작동 확인
안전 고려사항
전기적 안전
- 충전 전류가 완전히 차단된 후 잠금 해제
- 접지 연결 상태 확인
- 절연 저항 테스트 통과 후 해제
기계적 안전
- 커넥터 온도가 안전 범위 내인지 확인
- 기계적 잠금 장치 상태 점검
- 케이블 손상 여부 확인
보안 고려사항
- 인증된 사용자/시스템의 요청인지 확인
- 비정상적인 해제 시도 로깅
- 강제 해제 시 보안 이벤트 기록
오류 처리 및 복구
기계적 오류
{
"status": "UnlockFailed",
"statusInfo": {
"reasonCode": "MechanicalJam",
"additionalInfo": "커넥터 잠금 장치 걸림. 수동 해제 도구 필요"
}
}
전기적 오류
{
"status": "UnlockFailed",
"statusInfo": {
"reasonCode": "ElectricalFault",
"additionalInfo": "잠금 해제 모터 전원 공급 오류. 전기 시스템 점검 필요"
}
}
통신 오류
{
"status": "UnlockFailed",
"statusInfo": {
"reasonCode": "CommunicationError",
"additionalInfo": "커넥터 제어 모듈과 통신 불가. 하드웨어 재시작 필요"
}
}
중요 포인트
- UnlockConnector는 사용자 편의성과 안전성을 동시에 고려해야 하는 중요한 메시지입니다
- 충전 중인 커넥터는 안전상의 이유로 잠금 해제가 제한됩니다
- 비상 상황에서는 안전을 위해 강제 잠금 해제가 가능해야 합니다
- 잠금 해제 실패 시 사용자에게 명확한 안내와 대안을 제공해야 합니다
- 모든 잠금 해제 이벤트는 보안 감사를 위해 로깅되어야 합니다
- 기계적 고장 시 현장 기술자 지원이 필요할 수 있습니다
- 잠금 해제 후에는 ConnectorStatusNotification으로 상태 변화를 알려야 합니다
- 정전이나 통신 장애 시에도 안전한 잠금 해제 메커니즘이 필요합니다
이 메시지를 통해 사용자는 충전 완료 후 안전하게 케이블을 분리할 수 있으며, 비상 상황에서는 신속한 대응이 가능하고, 전체적으로 안전하고 사용자 친화적인 충전 경험을 제공할 수 있습니다.